const trails = require('svg-captcha')
const koaBody = require('koa-bodyparser');
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '..', 'public', 'user.json');
const rainning = JSON.parse(fs.readFileSync(filePath, 'utf-8'));

//console.log(rainning)

const router = require('koa-router')()
const jwt = require('jsonwebtoken');

const login = require('../model/login');

//设置JWT校验
const validateToken = async (ctx, next) => {
  const token = ctx.headers.authorization; // 从请求头中获取 Token
  console.log(token);
  if (!token) {
    ctx.status = 701; // 没有提供 Token，返回 401 错误
    ctx.body = { error: '无token,请先登录' };
    return;
  }

  try {
    const decoded = jwt.verify(token, 'secretKey'); // 使用你的密钥对 Token 进行验证
    // Token 验证成功，将用户信息保存到 ctx.state 中，以便后续中间件或路由处理使用
    ctx.state.user = decoded.user;
    return next();
  } catch (err) {
    console.log(rainning[0].token)
    ctx.status = 703; // Token 验证失败，返回 703 错误
    ctx.body = { error: 'token值错误' };
  }
};

router.get('/captcha', async (ctx, next) => {
  const captcha = trails.create();
  const answer = captcha.text.toLowerCase();
  console.log(answer);
  ctx.type = 'svg'; // 设置响应类型为SVG图片
  ctx.body = { 'data': captcha.data, 'trails': answer } // 将SVG图片数据作为响应体返回
})

router.post('/login', koaBody(), async ctx => {
  const name = ctx.request.body.username;
  const password = ctx.request.body.password;
  const login_message = await login.DEBARK(name, password);
  console.log(login_message);
  if (login_message.status === 299) {
    //登录成功后添加token值
    const token = jwt.sign({
      username: name,
    },
      'secretKey', // 签名密钥，实际应用中应更复杂且存储安全
      { expiresIn: '1h' } // token有效期
    );
    ctx.body = {
      'code': 299,
      'msg': '登录成功',
      'data': rainning,
      'token': token
    }
  } else {
    ctx.body = {
      'code': 300,
      'msg': '登录失败',
      'data': rainning
    }
  }
})

// //文件上传路由
// router.post('/upload', validateToken, async (ctx) => {
//   try {
//     // 获取上传文件
//     const file = ctx.request.files.file; // file是我们上传字段的name
//     console.log('上传的文件:', file);

//     ctx.body = {
//       status: 'success',
//       message: '文件上传成功',
//       filePath: file.path
//     };
//   } catch (err) {
//     ctx.body = {
//       status: 'error',
//       message: err.message
//     };
//   }
// });




module.exports = router



